#pragma once

#include<iostream>
#include<memory>
#include<string>
#include<cstring>
#include<cerrno>

#include<netinet/in.h>
#include<arpa/inet.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<functional>
#include "Log.hpp"

#define DIE(code) do{exit(code);}while(0)

enum{
    USAGE_ERR = 1,
    SOCKET_ERR,
    BIND_ERR
};

//english: 英文
bool SplitString(const std::string &line, std::string* key, std::string* value,const std::string& sep)
{
    auto pos = line.find(sep);
    if(pos == std::string::npos)    return false;
    *key = line.substr(0, pos);
    *value = line.substr(pos+sep.size());
    if(key->empty()||value->empty())    return false;
    
    return true;
}
